#include "BulletSoftBody/btDeformableContactConstraint.h"
#ifdef __cplusplus
extern "C" {
#endif
btDeformableStaticConstraint* bullet_NewbtDeformableStaticConstraint(btSoftBody::Node* node,btContactSolverInfo* infoGlobal){
	btSoftBody::Node * c_arg_node=(btSoftBody::Node *)(void*)(node);
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btDeformableStaticConstraint* wrap_out = new btDeformableStaticConstraint(c_arg_node,c_arg_infoGlobal);
	return wrap_out;
}

btDeformableStaticConstraint* bullet_NewbtDeformableStaticConstraint1(){
	btDeformableStaticConstraint* wrap_out = new btDeformableStaticConstraint();
	return wrap_out;
}

btDeformableStaticConstraint* bullet_NewbtDeformableStaticConstraint2(btDeformableStaticConstraint* other){
	btDeformableStaticConstraint const& c_arg_other=(btDeformableStaticConstraint const&)(*other);
	btDeformableStaticConstraint* wrap_out = new btDeformableStaticConstraint(c_arg_other);
	return wrap_out;
}

btSoftBody::Node** bullet_btDeformableStaticConstraint_GetFieldOfM_node(btDeformableStaticConstraint* c_this){
	return (btSoftBody::Node**)(&c_this->m_node);
}

bool bullet_btDeformableRigidContactConstraint_GetFieldOfM_binding(btDeformableRigidContactConstraint* c_this){
	return (bool)(c_this->m_binding);
}

btSoftBody::DeformableRigidContact** bullet_btDeformableRigidContactConstraint_GetFieldOfM_contact(btDeformableRigidContactConstraint* c_this){
	return (btSoftBody::DeformableRigidContact**)(&c_this->m_contact);
}

double bullet_btDeformableRigidContactConstraint_GetFieldOfM_penetration(btDeformableRigidContactConstraint* c_this){
	return (double)(c_this->m_penetration);
}

btVector3* bullet_btDeformableRigidContactConstraint_GetFieldOfM_total_normal_dv(btDeformableRigidContactConstraint* c_this){
	return (btVector3*)(&c_this->m_total_normal_dv);
}

double bullet_btDeformableRigidContactConstraint_GetFieldOfM_total_split_impulse(btDeformableRigidContactConstraint* c_this){
	return (double)(c_this->m_total_split_impulse);
}

btVector3* bullet_btDeformableRigidContactConstraint_GetFieldOfM_total_tangent_dv(btDeformableRigidContactConstraint* c_this){
	return (btVector3*)(&c_this->m_total_tangent_dv);
}

double bullet_btDeformableRigidContactConstraint_solveSplitImpulse(btDeformableRigidContactConstraint* c_this,btContactSolverInfo* infoGlobal){
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btScalar c_out = c_this->solveSplitImpulse(c_arg_infoGlobal);
	double wrap_out = (c_out);
	return wrap_out;
}

btDeformableNodeRigidContactConstraint* bullet_NewbtDeformableNodeRigidContactConstraint(btSoftBody::DeformableNodeRigidContact* contact,btContactSolverInfo* infoGlobal){
	btSoftBody::DeformableNodeRigidContact const& c_arg_contact=(btSoftBody::DeformableNodeRigidContact const&)(*contact);
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btDeformableNodeRigidContactConstraint* wrap_out = new btDeformableNodeRigidContactConstraint(c_arg_contact,c_arg_infoGlobal);
	return wrap_out;
}

btDeformableNodeRigidContactConstraint* bullet_NewbtDeformableNodeRigidContactConstraint1(btDeformableNodeRigidContactConstraint* other){
	btDeformableNodeRigidContactConstraint const& c_arg_other=(btDeformableNodeRigidContactConstraint const&)(*other);
	btDeformableNodeRigidContactConstraint* wrap_out = new btDeformableNodeRigidContactConstraint(c_arg_other);
	return wrap_out;
}

btDeformableNodeRigidContactConstraint* bullet_NewbtDeformableNodeRigidContactConstraint2(){
	btDeformableNodeRigidContactConstraint* wrap_out = new btDeformableNodeRigidContactConstraint();
	return wrap_out;
}

btSoftBody::DeformableNodeRigidContact* bullet_btDeformableNodeRigidContactConstraint_getContact(btDeformableNodeRigidContactConstraint* c_this){
	btSoftBody::DeformableNodeRigidContact const * c_out = c_this->getContact();
	btSoftBody::DeformableNodeRigidContact* wrap_out = (btSoftBody::DeformableNodeRigidContact*)(void*)(c_out);
	return wrap_out;
}

btSoftBody::Node** bullet_btDeformableNodeRigidContactConstraint_GetFieldOfM_node(btDeformableNodeRigidContactConstraint* c_this){
	return (btSoftBody::Node**)(&c_this->m_node);
}

btDeformableNodeAnchorConstraint* bullet_NewbtDeformableNodeAnchorConstraint(btSoftBody::DeformableNodeRigidAnchor* c,btContactSolverInfo* infoGlobal){
	btSoftBody::DeformableNodeRigidAnchor const& c_arg_c=(btSoftBody::DeformableNodeRigidAnchor const&)(*c);
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btDeformableNodeAnchorConstraint* wrap_out = new btDeformableNodeAnchorConstraint(c_arg_c,c_arg_infoGlobal);
	return wrap_out;
}

btDeformableNodeAnchorConstraint* bullet_NewbtDeformableNodeAnchorConstraint1(btDeformableNodeAnchorConstraint* other){
	btDeformableNodeAnchorConstraint const& c_arg_other=(btDeformableNodeAnchorConstraint const&)(*other);
	btDeformableNodeAnchorConstraint* wrap_out = new btDeformableNodeAnchorConstraint(c_arg_other);
	return wrap_out;
}

btDeformableNodeAnchorConstraint* bullet_NewbtDeformableNodeAnchorConstraint2(){
	btDeformableNodeAnchorConstraint* wrap_out = new btDeformableNodeAnchorConstraint();
	return wrap_out;
}

btSoftBody::DeformableNodeRigidAnchor** bullet_btDeformableNodeAnchorConstraint_GetFieldOfM_anchor(btDeformableNodeAnchorConstraint* c_this){
	return (btSoftBody::DeformableNodeRigidAnchor**)(&c_this->m_anchor);
}

btDeformableFaceRigidContactConstraint* bullet_NewbtDeformableFaceRigidContactConstraint(btSoftBody::DeformableFaceRigidContact* contact,btContactSolverInfo* infoGlobal,bool useStrainLimiting){
	btSoftBody::DeformableFaceRigidContact const& c_arg_contact=(btSoftBody::DeformableFaceRigidContact const&)(*contact);
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	bool c_arg_useStrainLimiting=useStrainLimiting;
	btDeformableFaceRigidContactConstraint* wrap_out = new btDeformableFaceRigidContactConstraint(c_arg_contact,c_arg_infoGlobal,c_arg_useStrainLimiting);
	return wrap_out;
}

btDeformableFaceRigidContactConstraint* bullet_NewbtDeformableFaceRigidContactConstraint1(btDeformableFaceRigidContactConstraint* other){
	btDeformableFaceRigidContactConstraint const& c_arg_other=(btDeformableFaceRigidContactConstraint const&)(*other);
	btDeformableFaceRigidContactConstraint* wrap_out = new btDeformableFaceRigidContactConstraint(c_arg_other);
	return wrap_out;
}

btDeformableFaceRigidContactConstraint* bullet_NewbtDeformableFaceRigidContactConstraint2(){
	btDeformableFaceRigidContactConstraint* wrap_out = new btDeformableFaceRigidContactConstraint();
	return wrap_out;
}

btSoftBody::DeformableFaceRigidContact* bullet_btDeformableFaceRigidContactConstraint_getContact(btDeformableFaceRigidContactConstraint* c_this){
	btSoftBody::DeformableFaceRigidContact const * c_out = c_this->getContact();
	btSoftBody::DeformableFaceRigidContact* wrap_out = (btSoftBody::DeformableFaceRigidContact*)(void*)(c_out);
	return wrap_out;
}

btSoftBody::Face** bullet_btDeformableFaceRigidContactConstraint_GetFieldOfM_face(btDeformableFaceRigidContactConstraint* c_this){
	return (btSoftBody::Face**)(&c_this->m_face);
}

bool bullet_btDeformableFaceRigidContactConstraint_GetFieldOfM_useStrainLimiting(btDeformableFaceRigidContactConstraint* c_this){
	return (bool)(c_this->m_useStrainLimiting);
}

btDeformableFaceNodeContactConstraint* bullet_NewbtDeformableFaceNodeContactConstraint(btSoftBody::DeformableFaceNodeContact* contact,btContactSolverInfo* infoGlobal){
	btSoftBody::DeformableFaceNodeContact const& c_arg_contact=(btSoftBody::DeformableFaceNodeContact const&)(*contact);
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btDeformableFaceNodeContactConstraint* wrap_out = new btDeformableFaceNodeContactConstraint(c_arg_contact,c_arg_infoGlobal);
	return wrap_out;
}

btDeformableFaceNodeContactConstraint* bullet_NewbtDeformableFaceNodeContactConstraint1(){
	btDeformableFaceNodeContactConstraint* wrap_out = new btDeformableFaceNodeContactConstraint();
	return wrap_out;
}

btSoftBody::DeformableFaceNodeContact* bullet_btDeformableFaceNodeContactConstraint_getContact(btDeformableFaceNodeContactConstraint* c_this){
	btSoftBody::DeformableFaceNodeContact const * c_out = c_this->getContact();
	btSoftBody::DeformableFaceNodeContact* wrap_out = (btSoftBody::DeformableFaceNodeContact*)(void*)(c_out);
	return wrap_out;
}

btSoftBody::DeformableFaceNodeContact** bullet_btDeformableFaceNodeContactConstraint_GetFieldOfM_contact(btDeformableFaceNodeContactConstraint* c_this){
	return (btSoftBody::DeformableFaceNodeContact**)(&c_this->m_contact);
}

btSoftBody::Face** bullet_btDeformableFaceNodeContactConstraint_GetFieldOfM_face(btDeformableFaceNodeContactConstraint* c_this){
	return (btSoftBody::Face**)(&c_this->m_face);
}

btSoftBody::Node** bullet_btDeformableFaceNodeContactConstraint_GetFieldOfM_node(btDeformableFaceNodeContactConstraint* c_this){
	return (btSoftBody::Node**)(&c_this->m_node);
}

btVector3* bullet_btDeformableFaceNodeContactConstraint_GetFieldOfM_total_normal_dv(btDeformableFaceNodeContactConstraint* c_this){
	return (btVector3*)(&c_this->m_total_normal_dv);
}

btVector3* bullet_btDeformableFaceNodeContactConstraint_GetFieldOfM_total_tangent_dv(btDeformableFaceNodeContactConstraint* c_this){
	return (btVector3*)(&c_this->m_total_tangent_dv);
}

btContactSolverInfo** bullet_btDeformableContactConstraint_GetFieldOfM_infoGlobal(btDeformableContactConstraint* c_this){
	return (btContactSolverInfo**)(&c_this->m_infoGlobal);
}

btVector3* bullet_btDeformableContactConstraint_GetFieldOfM_normal(btDeformableContactConstraint* c_this){
	return (btVector3*)(&c_this->m_normal);
}

bool bullet_btDeformableContactConstraint_GetFieldOfM_static(btDeformableContactConstraint* c_this){
	return (bool)(c_this->m_static);
}

#ifdef __cplusplus
}
#endif
